package foodmaterial.service;

import foodmaterial.action.OrderAction;
import foodmaterial.dto.*;
import foodmaterial.entity.*;

import java.util.List;
import java.util.Map;

public interface OrderService {
    int addMealsTypeTemplate(MealsTypeTemplate mealsTypeTemplate) ;
    int modifyMealsTypeTemplate(MealsTypeTemplate mealsTypeTemplate) ;
    int removeMealsTypeTemplate(Long id) ;
    List<MealsTypeTemplate> queryMealsTypeTemplate(MealsTypeTemplateDto dto) ;

    /**
     * 测算超标
     * @param dto
     */
    CalculateExceedResult calculateExceed(CalculateExceedDto dto) ;

    List<MealsTypeTemplateDetails> queryMealsTypeTemplateDetails(Long id) ;
    List<FoodMaterial> queryMealsTypeTemplateDetailsBySupply(MealsTypeTemplateDetailsDto dto) ;
    List<FoodMaterial> queryMealsTypeTemplateDetailsByVipSupply(MealsTypeTemplateDetailsDto dto) ;

    int addCustomerTeam(CustomerTeam customerTeam) ;
    int modifyCustomerTeam(CustomerTeam customerTeam) ;
    int removeCustomerTeam(Long id) ;
    int removeCustomerTeamDetailsByDetailId(Long id) ;
    int addCustomerTeamDetails(CustomerTeamDetails customerTeamDetails) ;

    List<CustomerTeam> queryCustomerTeam(CustomerTeam customerTeam) ;

    List<CustomerTeamDetails> queryCustomerTeamDetails(Map<String,Object> params) ;
    List<MealsType> queryCustomerTeamMealsType(CustomerTeam customerTeam) ;

    String addOrders(OrderAction.TempOrderData data) ;

    /**
     * 代客户直接下单或者客户自下单
     * @param data
     * @return
     */
    String addDirectOrders(OrderAction.TempOrderData data) ;

    String modifyOrders(Orders orders) ;

    String removeOrders(Long orderId) ;

    List<Orders> queryOrders(OrdersDto dto) ;

    List<OrdersCount> queryOrdersCount() ;

    List<Orders> queryRemoveOrders(OrdersDto dto) ;

    List<OrdersDetail> queryOrdersDetail(Long id) ;

    List<OrdersRecipe> queryOrdersRecipe(Long id) ;

    List<OrdersDetail> queryRemoveOrdersDetail(Long id) ;

    List<OrdersRecipe> queryRemoveOrdersRecipe(Long ordersId) ;

    String copyOrders(OrdersDto dto) ;

    String batchModifyOrdersPrice(BatchModifyOrdersPriceDto dto) ;

    List<Orders> queryTrackOrders(TrackOrdersDto dto) ;

    /**
     * 配送出库
     * @param orderIds
     * @return
     */
    String supplyOutWareHouse(List<Long> orderIds) ;

    List<Orders> print(List<Long> ordersIds,List<String> remarks) ;

    int lockOrders(LockOrderDto params) ;

    OrderAction.SupplySummary querySupplySummaryByRouter(SupplySummaryBySupplyDto dto) ;

    List<FoodMaterial> queryShowPrintLabel(SupplySummaryBySupplyDto dto) ;

    List<RecipeTemplate> queryRecipeShowPrintLabel(SupplySummaryBySupplyDto dto) ;

    List<OrdersDetail> queryPrintLabel(SupplySummaryBySupplyDto dto) ;

    List<OrdersRecipe> queryRecipePrintLabel(SupplySummaryBySupplyDto dto) ;

    OrderAction.SupplySummary querySupplySummaryBySupplier(SupplySummaryBySupplierDto params) ;

    int batchModifyOrdersDistributionDate(BatchModifyOrdersDistributionDateDto dto) ;

    OrderAction.SupplySummary queryOrderDetailsByDistributionDateAndRouter(DistributionDateAndRouterDto dto) ;

    List<Map<String,Object>> queryReminder(ReminderDto reminderDto) ;

    List<Map<String,Object>> queryExceed(ExceedDto dto) ;

    List<FoodProduct> foodProduct(FoodProductDto dto) ;
}
